package Controlador;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;

import com.sun.org.apache.xalan.internal.xsltc.compiler.sym;

import Vista.formConsultarPlanteamiento;
import Vista.formRegistrarPlanteamiento;
import bean.ConexionDefensa;
import bean.Mensajero;
import javax.swing.table.DefaultTableModel;

public class ControladorConsultarPlanteamiento implements ActionListener {

	
	private formConsultarPlanteamiento PantallaConsultar;
	private Mensajero mensajero;
	Vector<Vector<String>> tabla = new Vector<Vector<String>>();

	
	public ControladorConsultarPlanteamiento() {
		super();
		this.PantallaConsultar = new formConsultarPlanteamiento();
		this.PantallaConsultar.setLocationRelativeTo(null);
		this.PantallaConsultar.setVisible(true);
		this.PantallaConsultar.AgregarEscuchadores(this);
		this.mensajero = new Mensajero ("org.postgresql.Driver","jdbc:postgresql://localhost:5432/","BD2-4","postgres","postgres");
	}
	
	public void actionPerformed(ActionEvent e) {
		String evento = e.getActionCommand();
		
		if (evento.equals("Ver")){
			BuscarPlanteamientos();
		}else if (evento.equals("Cargar")){
			Cargar();
		}
		else if (evento.equals("Salir")){
			this.PantallaConsultar.dispose();
		}else if (evento.equals("Modificar")){
			Modificar();
		}else if (evento.equals("Eliminar")){
			Eliminar();
		}else if (evento.equals("Cancelar")){
			this.PantallaConsultar.Cancelar();
		}
		
		
	}

	
	private void BuscarPlanteamientos(){
		this.PantallaConsultar.getTbPlanteamientos().LimpiarTabla();
		Vector<String> campos = new Vector<String>();
		String tipoSeleccionado=(String) this.PantallaConsultar.getCmbPlantemientos().getSelectedItem();
		campos.add("cedula");campos.add("nombre");campos.add("tipo");campos.add("fecha");
		tabla=this.mensajero.Buscar("planteamiento", campos,"tipo="+"'"+tipoSeleccionado+"'");
		for(int i=0;i<tabla.size();i++){
			String[] nuevafila= {tabla.get(i).get(0),tabla.get(i).get(1),tabla.get(i).get(2)};
			this.PantallaConsultar.getTbPlanteamientos().AgregarFila(nuevafila);
		}
	}
	
	private void Modificar() {
		Vector<String> campos = new Vector<String>();
		Vector<String> valores = new Vector<String>();
		String planteamientoModificado;
		String condicion;
		if (this.PantallaConsultar.getTxtAPlanteamiento().getText().equals("")){
			this.PantallaConsultar.getMensaje().showMessageDialog(this.PantallaConsultar.getBtModificar(), "Debe seleccionar un planteamiento");
		}else{
			campos.add("descripcion");
			planteamientoModificado="'"+this.PantallaConsultar.getTxtAPlanteamiento().getText()+"'";
			valores.add(planteamientoModificado);
			condicion="cedula="+"'"+tabla.get(this.PantallaConsultar.getTbPlanteamientos().getSelectedRow()-1).get(0)+"'"+" and "+"fecha="+"'"+tabla.get(this.PantallaConsultar.getTbPlanteamientos().getSelectedRow()-1).get(3)+"'";
			this.mensajero.Actualizar("planteamiento", campos, valores, condicion);
			this.PantallaConsultar.getMensaje().showMessageDialog(this.PantallaConsultar.getBtModificar(), "Planteamiento Modificado Exitosamente");
			// EN CONSTRUCCION	
		}
		this.PantallaConsultar.Cancelar();
	}
	
	private void Eliminar(){
		if((this.PantallaConsultar.getTbPlanteamientos().getSelectedRow()==-1) && (this.PantallaConsultar.getTbPlanteamientos().getSelectedRow()==0) ){
			this.PantallaConsultar.getMensaje().showMessageDialog(this.PantallaConsultar.getBtEliminar(), "Debe seleccionar un planteamiento");
		}else{
		String condicion;
		condicion="cedula="+"'"+tabla.get(this.PantallaConsultar.getTbPlanteamientos().getSelectedRow()-1).get(0)+"'"+" and "+
				  "fecha="+"'"+tabla.get(this.PantallaConsultar.getTbPlanteamientos().getSelectedRow()-1).get(3)+"'";
		if(this.mensajero.BorrarFisicamente("planteamiento", condicion)){
			this.PantallaConsultar.getMensaje().showMessageDialog(this.PantallaConsultar.getBtModificar(), "Planteamiento Eliminado Exitosamente");
		}else
			this.PantallaConsultar.getMensaje().showMessageDialog(this.PantallaConsultar.getBtModificar(), "Ha ocurrido un problema! Registro no eliminado");
		}		
		this.PantallaConsultar.Cancelar();
	}
	
	public void Cargar(){
		if((this.PantallaConsultar.getTbPlanteamientos().getSelectedRow()!=-1) && (this.PantallaConsultar.getTbPlanteamientos().getSelectedRow()!=0) ){
			if (this.PantallaConsultar.getTbPlanteamientos().getSelectedRowCount()==1){
				Vector<Vector<String>> registro = new Vector<Vector<String>>();
				Vector<String> campos = new Vector<String>();
				campos.add("descripcion");
				registro=this.mensajero.Buscar("planteamiento", campos, 
						"cedula="+"'"+this.tabla.get(this.PantallaConsultar.getTbPlanteamientos().getSelectedRow()-1).get(0)+"'"+" and "+
						"fecha="+"'"+this.tabla.get(this.PantallaConsultar.getTbPlanteamientos().getSelectedRow()-1).get(3)+"'"+" and "+
						"tipo="+"'"+this.tabla.get(this.PantallaConsultar.getTbPlanteamientos().getSelectedRow()-1).get(2)+"'");
				this.PantallaConsultar.getTxtAPlanteamiento().setText(registro.get(0).get(0));
				this.PantallaConsultar.getTbPlanteamientos().setEnabled(false);
			}else
				this.PantallaConsultar.getMensaje().showMessageDialog(this.PantallaConsultar.getBtBuscarP(), "Debe seleccionar UN solo planteamiento");
		}else
			this.PantallaConsultar.getMensaje().showMessageDialog(this.PantallaConsultar.getBtBuscarP(), "Debe seleccionar un planteamiento");
	}
}
